/**
 * @author : niu niu
 * @version : 1.0.0
 * @date : 2022/12/20 20:36
 *  synchronized 使用
 *      1.修饰代码块
 *      2.修饰普通方法
 *      3.修饰静态方法
 *   特性： 1.互斥 进入加锁 退出解锁
 *          2.刷新内存
 *                  工作过程：1.获取互斥锁
 *                           2.从主内存拷贝变量的最新副本到工作内存
 *                           3.执行代码
 *                           4.将更改的共享刷新到主内存
 *                           5.释放互斥锁
 *         3.可重入
 */
public class ThreadDemo17 {
    public static void main(String[] args) {
        Object locker = new Object();
        //1.修饰代码块 显示写出 锁对象（任意对象）

        //2.修饰普通方法  锁对象是该实例

        //3.修饰静态方法  锁对象是 类对象

    }
}
class Student{

    public synchronized void fun1(){
        //TODO
    }
    //等同 fun1
    public void fun2(){
        synchronized (this){
            //TODO
        }
    }

    public static synchronized void fun3(){

    }
    //等同 fun3
    public static void fun4(){
        synchronized (Student.class){

        }
    }
}